home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Softdisk Supreme
/
Softdisk Supreme.iso
/
pc
/
DSK Files
/
0-49
/
SD017a.dsk
/
GAME1.bas
< prev
next >
Wrap
BASIC Source File
|
2003-06-12
|
8KB
|
164 lines
1 HOME : DIM V$(26),N$(94),I$(5),AZ$(15),IT$(15),AZ(15),P$(4)
2 PRINT CHR$(4);"OPEN VERBS": PRINT CHR$(4);"READ VERBS"
3 FOR X = 1 TO 26: INPUT V$(X): NEXT
4 PRINT CHR$(4);"CLOSE VERBS"
5 PRINT CHR$(4);"OPEN PLACES": PRINT CHR$(4);"READ PLACES": FOR X = 0 TO 4: INPUT P$(X): NEXT : PRINT CHR$(4);"CLOSE PLACES"
6 PRINT CHR$(4);"OPEN NOUNS": PRINT CHR$(4);"READ NOUNS": FOR X = 1 TO 94: INPUT N$(X): NEXT : PRINT CHR$(4);"CLOSE NOUNS"
7 PRINT CHR$(4);"OPEN ITEMS": PRINT CHR$(4);"READ ITEMS"
8 FOR X = 0 TO 11: INPUT IT$(X): NEXT
9 PRINT CHR$(4);"CLOSE ITEMS"
10 FOR I = 771 TO 789: READ A: POKE I,A: NEXT
11 AZ$(1) = IT$(4):AZ$(2) = IT$(5):AZ$(3) = IT$(6):AZ$(4) = IT$(7)
12 AZ(1) = 4:AZ(2) = 5:AZ(3) = 6:AZ(4) = 7
13 VTAB 21: HTAB 1
14 I$(1) = IT$(1):I$(2) = IT$(3)
16 HGR
18 DATA 173,48,192,136,208,4,198,1,240,8,202,208,246,166,0,76,3,3,96
20 L = 26624: GOSUB 100: CALL 36400
30 GOSUB 52: GOTO 135
52 FOR YX = 1 TO 9: IF AZ(YX) >2 THEN ON AZ(YX) GOSUB 58,58,54,65,72,82,96,60,57: GOSUB 120: CALL 36361
53 NEXT : RETURN
54 L = 27143: GOSUB 100:X = 100:Y = 135: RETURN
57 L = 28146: GOSUB 100:X = 256:Y = 126: RETURN
60 L = 28085: GOSUB 100:X = 220:Y = 140: RETURN
65 L = 26883: GOSUB 100:X = 200:Y = 95: RETURN
72 L = 26935: GOSUB 100:X = 230:Y = 120: RETURN
82 L = 26996: GOSUB 100:X = 30:Y = 120: RETURN
96 L = 27088: GOSUB 100:X = 140:Y = 130: RETURN
100 LL = L - INT(L/256) *256:LH = INT(L/256)
110 POKE 36352,LL: POKE 36353,LH: RETURN
120 POKE 36354,X -(X >255) *256: POKE 36355,X >255: POKE 36356,Y: RETURN
135 PRINT N$(1)
136 GOSUB 140: GOTO 220
140 PRINT N$(2);
145 VTAB PEEK(37) +1: HTAB 23: CALL -868: GET A$
150 Z = ASC(A$) -64
152 IF Z = -51 AND SW = 0 THEN POKE -16303,0:SW = 1: GOTO 145
153 IF Z = -51 THEN POKE -16304,0:SW = 0: GOTO 145
155 IF Z <1 OR Z >26 THEN 145
156 IF V$(Z) = "X" THEN 145
200 VTAB PEEK(37) +1: HTAB 23: PRINT V$(Z);
205 VTAB PEEK(37) +1: HTAB PEEK(36) +2: INPUT "";B$
210 IF B$ = "" THEN ZZ = PEEK(37): POKE 37,ZZ -1: GOTO 145
211 IF Z = 9 THEN GOSUB 1020:S = 1
213 IF Z = 17 THEN GOTO 1140
215 RETURN
220 IF Z = 7 THEN GOSUB 1000:S = 1: IF GT = 1 THEN GT = 0:S = 0: GOTO 20
225 IF Z = 4 THEN GOSUB 1030:S = 1: IF CZ = 1 THEN CZ = 0:S = 0: GOTO 20
227 IF Z = 12 OR Z = 18 THEN GOSUB 1060:S = 1
230 IF Z = 5 OR Z = 14 OR Z = 23 THEN GOSUB 1080:S = 1
231 IF Z = 21 THEN GOSUB 1090
232 IF Z = 19 THEN S1 = 0: GOTO 260
240 IF S = 0 THEN GOSUB 250
242 S = 0: GOTO 136
250 PRINT N$(3): RETURN
251 GOTO 136
260 PRINT N$(4)
261 IF L1 = 1 THEN IF W1 = 0 OR W1 = -2 OR W1 = C1 OR W1 = C2 THEN L = 27228: GOSUB 100: CALL 36400: GOTO 264
262 IF ABS(W1) = 1 THEN GOSUB 1110: IF L1 = 1 THEN GOTO 264
263 L = 27222: GOSUB 100: CALL 36400
264 PRINT N$(5): IF W1 = -2 THEN PRINT N$(6)
265 GOSUB 140
266 IF Z = 21 THEN GOSUB 997: GOSUB 1094: IF C$ = N$(7) THEN 261
267 IF Z = 21 AND S1 = 1 THEN IF C$ = N$(8) OR C$ = N$(9) THEN PRINT N$(10): GOTO 264
268 IF Z = 21 THEN GOSUB 1130:S = 1: IF C$ = N$(11) THEN GOSUB 1120
269 GT = 0: IF Z = 21 AND W1 = -2 THEN IF C$ = N$(12) THEN PRINT N$(13)
271 IF Z = 19 AND S1 = 1 AND W1 = 0 THEN S1 = 0: GOTO 261
273 IF Z = 14 AND S1 = 0 AND W1 = 0 THEN S1 = 1: GOTO 261
275 IF Z = 12 OR Z = 18 THEN PRINT N$(14):S = 1
281 IF Z = 23 AND W1 = 1 THEN IF C1 < >1 THEN PRINT N$(15): GOTO 264
282 IF Z = 23 AND W1 = -1 THEN W1 = 0: GOTO 261
283 IF Z = 23 AND W1 = 0 AND S1 = 0 THEN W1 = 1: GOTO 261
284 IF Z = 23 AND W1 = 1 AND C1 = 1 THEN W1 = 2: GOTO 330
285 IF Z = 5 AND W1 = 0 AND S1 = 0 THEN W1 = -1: GOTO 261
287 IF Z = 5 AND W1 = 1 THEN W1 = 0: GOTO 261
289 IF Z = 5 AND W1 = -1 THEN IF C2 < > -1 THEN PRINT N$(15): GOTO 264
292 IF Z = 5 AND W1 = -1 THEN W1 = -2: GOTO 261
296 IF W1 = -2 AND Z = 23 THEN W1 = -1: GOTO 261
300 IF Z = 4 THEN GOSUB 1030:S = 1: IF CZ = 1 THEN AZ(YZ) = 0:AZ$(YZ) = "":CZ = 0: PRINT N$(16): IF C$ = N$(7) THEN L1 = 0: GOTO 261
302 IF Z = 7 THEN PRINT N$(17): GOTO 264
303 IF L1 < >1 THEN IF Z = 26 OR Z = 15 THEN PRINT N$(18):S = 1: GOTO 320
304 IF Z = 26 THEN IF B$ = "DOOR" THEN IF ABS(W1) = 1 THEN PRINT N$(19):S = 1
306 IF Z = 15 THEN IF W1 = 1 AND U1 = 1 THEN PRINT N$(20):C1 = 1: GOTO 261
308 IF Z = 15 THEN IF W1 = -1 AND U2 = 1 THEN PRINT N$(20):C2 = -1: GOTO 261
310 IF Z = 15 AND ABS(W1) = 1 THEN PRINT N$(21):S = 1
311 IF Z = 15 AND ABS(W1) < >1 THEN PRINT N$(22):S = 1
315 IF Z = 5 OR Z = 14 OR Z = 19 OR Z = 23 THEN GOSUB 1080:S = 0: GOTO 264
320 IF S = 0 THEN GOSUB 250
322 S = 0: GOTO 264
330 PRINT : PRINT : PRINT : PRINT N$(23)
331 SZ = -2:Z1 = 199:Z2 = 1: GOSUB 332: GOTO 370
332 HGR : POKE 253,1: POKE 254,102: POKE 252,0: POKE 4,1
334 FOR X = Z1 TO Z2 STEP SZ
336 SD = X/35
338 POKE 255,0: POKE 5,SD
340 GOSUB 360
342 CALL 16400
344 POKE 0,X/2: POKE 1,5:QT = PEEK( -16336) + PEEK( -16336): CALL 771:QT = PEEK( -16336)
346 HCOLOR= 0: POKE 255,1: GOSUB 360
348 CALL 16400
350 NEXT
355 RETURN
360 POKE 249,X -(X >255) *256: POKE 250,X >255: POKE 251,30: RETURN
370 PRINT CHR$(4);"BLOAD CHAIN,A520"
380 CALL 520"GAME2"
997 C$ = B$: IF LEN(B$) <4 THEN C$ = B$ +"XXXX"
998 C$ = LEFT$(C$,4): RETURN
1000 GOSUB 997
1001 FOR X = 1 TO 9: IF LEFT$(C$,4) = LEFT$(AZ$(X),4) THEN GOSUB 1010:AZ$(X) = "":AZ(X) = 0: PRINT "O'K":GT = 1: RETURN
1002 NEXT
1004 IF C$ = N$(8) OR C$ = N$(9) THEN IF W1 = 0 THEN PRINT N$(35): RETURN
1008 PRINT N$(36): RETURN
1010 FOR Y = 1 TO 5: IF I$(Y) = "" THEN I$(Y) = AZ$(X): RETURN
1012 NEXT : PRINT N$(37): POP : RETURN
1020 FOR X = 1 TO 5: IF I$(X) < >"" THEN PRINT I$(X)
1022 NEXT : RETURN
1030 GOSUB 997
1031 IF C$ = LEFT$(IT$(1),4) THEN PRINT N$(38): RETURN
1032 FOR Y = 1 TO 5
1033 IF C$ = LEFT$(I$(Y),4) THEN GOSUB 1040
1034 NEXT Y: PRINT N$(39): RETURN
1040 FOR YX = 0 TO 9: IF I$(Y) = IT$(YX) THEN GOSUB 1050
1042 NEXT YX: RETURN
1050 FOR YZ = 1 TO 8: IF AZ(YZ) = 0 THEN AZ(YZ) = YX:AZ$(YZ) = IT$(YX): PRINT "0'K":I$(Y) = "": POP : POP :CZ = 1: RETURN
1052 NEXT YZ: RETURN
1060 GOSUB 997
1061 FOR Y = 1 TO 3
1062 IF C$ = LEFT$(P$(Y),4) THEN PRINT MID$ (P$(Y),6, LEN(P$(Y)));: GOTO 1065
1064 NEXT : GOTO 1068
1065 PRINT " WITH ": FOR Y = 1 TO 9: IF AZ$(Y) < >"" THEN PRINT AZ$(Y);" ";
1066 NEXT : PRINT : RETURN
1068 IF C$ = N$(8) OR C$ = N$(9) THEN PRINT N$(40): RETURN
1070 FOR Y = 1 TO 5: IF C$ = LEFT$(IT$(4),4) THEN IF I$(Y) = IT$(4) THEN PRINT N$(41): RETURN
1071 NEXT
1072 FOR Y = 1 TO 5: IF C$ = LEFT$(I$(Y),4) THEN PRINT N$(42): RETURN
1073 NEXT
1075 FOR Y = 1 TO 9: IF C$ = LEFT$(AZ$(Y),4) THEN PRINT N$(43): RETURN
1076 NEXT
1078 PRINT N$(44): RETURN
1080 PRINT N$(45): RETURN
1090 GOSUB 997
1092 IF C$ = N$(8) OR C$ = N$(9) THEN POP :S1 = 1: GOTO 260
1094 IF C$ = N$(7) THEN GOSUB 1100
1096 RETURN
1100 FOR X = 1 TO 5
1102 IF C$ = LEFT$(I$(X),4) THEN PRINT N$(46):L1 = 1:S = 1: RETURN
1104 NEXT : PRINT N$(39):S = 1: RETURN
1110 PRINT N$(47)
1111 IF L1 < >1 THEN RETURN
1112 L = 27228: GOSUB 100: CALL 36400:L = 27359: GOSUB 100:X = 110:Y = 58: GOSUB 120: CALL 36361
1116 RETURN
1120 IF W1 = 0 THEN PRINT N$(48): RETURN
1121 IF GT < >1 THEN RETURN
1122 IF L1 < >1 THEN PRINT N$(49): RETURN
1123 IF W1 = 1 THEN U1 = 1
1124 IF W1 = -1 THEN U2 = 1
1126 PRINT N$(50): RETURN
1130 IF C$ = "KEYX" THEN C$ = N$(11)
1131 IF W1 = -2 AND C$ = N$(12) THEN RETURN
1132 FOR Y = 1 TO 5: IF C$ = LEFT$(I$(Y),4) THEN GT = 1: RETURN
1133 NEXT : PRINT N$(39): RETURN
1140 L = 26624: GOSUB 100: CALL 36400: PRINT N$(51)
1144 PRINT N$(52);: GET A$: IF A$ = "Y" THEN CLEAR : PRINT : GOTO 1
1148 IF A$ = "N" THEN PRINT CHR$(4)"RUN KICK.IT.OFF"
1150 PRINT : GOTO 1144